using System;
using System.Collections.Generic;

namespace Book.Blog.Core.DTOs
{
    public class SettingDTO
    {
        public Guid Id { get; set; }
        public string Key { get; set; } = string.Empty;
        public string Value { get; set; } = string.Empty;
        public string? Description { get; set; }
        public string Group { get; set; } = string.Empty;
        public string Type { get; set; } = string.Empty;
        public DateTime CreatedAt { get; set; }
        public DateTime? UpdatedAt { get; set; }
    }

    public class CreateSettingDTO
    {
        public string Key { get; set; } = string.Empty;
        public string Value { get; set; } = string.Empty;
        public string? Description { get; set; }
        public string Group { get; set; } = string.Empty;
        public string Type { get; set; } = string.Empty;
    }

    public class UpdateSettingDTO
    {
        public Guid Id { get; set; }
        public string Key { get; set; } = string.Empty;
        public string Value { get; set; } = string.Empty;
        public string? Description { get; set; }
        public string Group { get; set; } = string.Empty;
        public string Type { get; set; } = string.Empty;
    }

    public class BatchUpdateSettingsDTO
    {
        public List<UpdateSettingDTO> Settings { get; set; } = new();
    }

    public class SettingGroupDTO
    {
        public string Group { get; set; } = string.Empty;
        public List<SettingDTO> Settings { get; set; } = new();
    }

    public class SiteSettingsDTO
    {
        public string? SiteName { get; set; }
        public string? SiteDescription { get; set; }
        public string? SiteKeywords { get; set; }
        public string? SiteLogo { get; set; }
        public string? SiteFavicon { get; set; }
        public string? FooterText { get; set; }
        public bool IsClosed { get; set; }
        public string? ClosedMessage { get; set; }
    }

    public class EmailSettingsDTO
    {
        public string? SmtpServer { get; set; }
        public int SmtpPort { get; set; }
        public string? SmtpUsername { get; set; }
        public string? SmtpPassword { get; set; }
        public string? FromEmail { get; set; }
        public string? FromName { get; set; }
    }

    public class StorageSettingsDTO
    {
        public string Provider { get; set; } = "Local";
        public string LocalPath { get; set; } = "wwwroot/uploads";
        public int MaxFileSize { get; set; } = 10;
        public string AllowedFileTypes { get; set; } = "jpg,jpeg,png,gif";
    }
} 